home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / CMICCProfile.a < prev    next >
Text File  |  1996-05-01  |  28KB  |  692 lines

  1. ;
  2. ;    File:        CMICCProfile.a
  3. ;
  4. ;    Contains:    Definitions for ColorSync 2.0 profile
  5. ;
  6. ;    Version:    Technology:    ColorSync 2.0
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__CMICCPROFILE__') = 'UNDEFINED' THEN
  19. __CMICCPROFILE__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24. ;  Current CMProfile.header.profileVersion Major: 2, Minor: 0, Stage: Developement (x20), Prerelease:0x01 
  25.  
  26. cmCS2ProfileVersion                EQU        $02000000
  27. ;  Current Major version number 
  28.  
  29. cmCurrentProfileMajorVersion    EQU        $02000000
  30. ;  magic cookie number for anonymous file ID 
  31.  
  32. cmMagicNumber                    EQU        'acsp'
  33. ;  ColorSync profile version 1.0 
  34.  
  35. cmCS1ProfileVersion                EQU        $00000100
  36. ; **********************************************************************
  37. ; ************** ColorSync 2.0 profile specification *******************
  38. ; **********************************************************************
  39. ;  profile flags element values 
  40.  
  41. cmEmbeddedProfile                EQU        0                    ; 0 is not embedded profile, 1 is embedded profile 
  42. cmEmbeddedUse                    EQU        1                    ; 0 is to use anywhere, 1 is to use as embedded profile only 
  43. ;  data type element values 
  44.  
  45. cmAsciiData                        EQU        0
  46. cmBinaryData                    EQU        1
  47. ;  rendering intent element values  
  48.  
  49. cmPerceptual                    EQU        0                    ; Photographic images 
  50. cmRelativeColorimetric            EQU        1                    ; Logo Colors 
  51. cmSaturation                    EQU        2                    ; Business graphics 
  52. cmAbsoluteColorimetric            EQU        3                    ; Logo Colors 
  53. ;  speed and quality flag options 
  54.  
  55. cmNormalMode                    EQU        0                    ; it uses the least significent two bits in the high word of flag 
  56. cmDraftMode                        EQU        1                    ; it should be evaulated like this: right shift 16 bits first, mask off the 
  57. cmBestMode                        EQU        2                    ; high 14 bits, and then compare with the enum to determine the option value 
  58. ;  device/media attributes element values  
  59.  
  60. cmReflective                    EQU        0                    ; 0 is reflective media, 1 is transparency media 
  61. cmGlossy                        EQU        1                    ; 0 is glossy, 1 is matte 
  62. ;  screen encodings  
  63.  
  64. cmPrtrDefaultScreens            EQU        0                    ; Use printer default screens.  0 is false, 1 is ture 
  65. cmLinesPer                        EQU        1                    ; 0 is LinesPerCm, 1 is LinesPerInch 
  66. ;  2.0 tag type information 
  67.  
  68. cmNumHeaderElements                EQU        10
  69. ;  public tags 
  70.  
  71. cmAToB0Tag                        EQU        'A2B0'
  72. cmAToB1Tag                        EQU        'A2B1'
  73. cmAToB2Tag                        EQU        'A2B2'
  74. cmBlueColorantTag                EQU        'bXYZ'
  75. cmBlueTRCTag                    EQU        'bTRC'
  76. cmBToA0Tag                        EQU        'B2A0'
  77. cmBToA1Tag                        EQU        'B2A1'
  78. cmBToA2Tag                        EQU        'B2A2'
  79. cmCalibrationDateTimeTag        EQU        'calt'
  80. cmCharTargetTag                    EQU        'targ'
  81. cmCopyrightTag                    EQU        'cprt'
  82. cmDeviceMfgDescTag                EQU        'dmnd'
  83. cmDeviceModelDescTag            EQU        'dmdd'
  84. cmGamutTag                        EQU        'gamt'
  85. cmGrayTRCTag                    EQU        'kTRC'
  86. cmGreenColorantTag                EQU        'gXYZ'
  87. cmGreenTRCTag                    EQU        'gTRC'
  88. cmLuminanceTag                    EQU        'lumi'
  89. cmMeasurementTag                EQU        'meas'
  90. cmMediaBlackPointTag            EQU        'bkpt'
  91. cmMediaWhitePointTag            EQU        'wtpt'
  92. cmNamedColorTag                    EQU        'ncol'
  93. cmNamedColor2Tag                EQU        'ncl2'
  94. cmPreview0Tag                    EQU        'pre0'
  95. cmPreview1Tag                    EQU        'pre1'
  96. cmPreview2Tag                    EQU        'pre2'
  97. cmProfileDescriptionTag            EQU        'desc'
  98. cmProfileSequenceDescTag        EQU        'pseq'
  99. cmPS2CRD0Tag                    EQU        'psd0'
  100. cmPS2CRD1Tag                    EQU        'psd1'
  101. cmPS2CRD2Tag                    EQU        'psd2'
  102. cmPS2CRD3Tag                    EQU        'psd3'
  103. cmPS2CSATag                        EQU        'ps2s'
  104. cmPS2RenderingIntentTag            EQU        'ps2i'
  105. cmRedColorantTag                EQU        'rXYZ'
  106. cmRedTRCTag                        EQU        'rTRC'
  107. cmScreeningDescTag                EQU        'scrd'
  108. cmScreeningTag                    EQU        'scrn'
  109. cmTechnologyTag                    EQU        'tech'
  110. cmUcrBgTag                        EQU        'bfd '
  111. cmViewingConditionsDescTag        EQU        'vued'
  112. cmViewingConditionsTag            EQU        'view'
  113. ;  custom tags 
  114.  
  115. cmPS2CRDVMSizeTag                EQU        'psvm'
  116. ;  technology tag descriptions 
  117.  
  118. cmTechnologyFilmScanner            EQU        'fscn'
  119. cmTechnologyReflectiveScanner    EQU        'rscn'
  120. cmTechnologyInkJetPrinter        EQU        'ijet'
  121. cmTechnologyThermalWaxPrinter    EQU        'twax'
  122. cmTechnologyElectrophotographicPrinter EQU 'epho'
  123. cmTechnologyElectrostaticPrinter EQU    'esta'
  124. cmTechnologyDyeSublimationPrinter EQU    'dsub'
  125. cmTechnologyPhotographicPaperPrinter EQU 'rpho'
  126. cmTechnologyFilmWriter            EQU        'fprn'
  127. cmTechnologyVideoMonitor        EQU        'vidm'
  128. cmTechnologyVideoCamera            EQU        'vidc'
  129. cmTechnologyProjectionTelevision EQU    'pjtv'
  130. cmTechnologyCRTDisplay            EQU        'CRT '
  131. cmTechnologyPMDisplay            EQU        'PMD '
  132. cmTechnologyAMDisplay            EQU        'AMD '
  133. cmTechnologyPhotoCD                EQU        'KPCD'
  134. cmTechnologyPhotoImageSetter    EQU        'imgs'
  135. cmTechnologyGravure                EQU        'grav'
  136. cmTechnologyOffsetLithography    EQU        'offs'
  137. cmTechnologySilkscreen            EQU        'silk'
  138. cmTechnologyFlexography            EQU        'flex'
  139. ;  type signatures 
  140.  
  141. cmSigCurveType                    EQU        'curv'
  142. cmSigDataType                    EQU        'data'
  143. cmSigDateTimeType                EQU        'dtim'
  144. cmSigLut16Type                    EQU        'mft2'
  145. cmSigLut8Type                    EQU        'mft1'
  146. cmSigMeasurementType            EQU        'meas'
  147. cmSigNamedColorType                EQU        'ncol'
  148. cmSigNamedColor2Type            EQU        'ncl2'
  149. cmSigProfileDescriptionType        EQU        'desc'
  150. cmSigScreeningType                EQU        'scrn'
  151. cmSigS15Fixed16Type                EQU        'sf32'
  152. cmSigSignatureType                EQU        'sig '
  153. cmSigTextType                    EQU        'text'
  154. cmSigU16Fixed16Type                EQU        'uf32'
  155. cmSigU1Fixed15Type                EQU        'uf16'
  156. cmSigUInt32Type                    EQU        'ui32'
  157. cmSigUInt64Type                    EQU        'ui64'
  158. cmSigUInt8Type                    EQU        'ui08'
  159. cmSigViewingConditionsType        EQU        'view'
  160. cmSigXYZType                    EQU        'XYZ '
  161. ;  Measurement type encodings 
  162. ;  Measurement Flare 
  163.  
  164. cmFlare0                        EQU        $00000000
  165. cmFlare100                        EQU        $00000001
  166. ;  Measurement Geometry    
  167.  
  168. cmGeometryUnknown                EQU        $00000000
  169. cmGeometry045or450                EQU        $00000001
  170. cmGeometry0dord0                EQU        $00000002
  171. ;  Standard Observer    
  172.  
  173. cmStdobsUnknown                    EQU        $00000000
  174. cmStdobs1931TwoDegrees            EQU        $00000001
  175. cmStdobs1964TenDegrees            EQU        $00000002
  176. ;  Standard Illuminant 
  177.  
  178. cmIlluminantUnknown                EQU        $00000000
  179. cmIlluminantD50                    EQU        $00000001
  180. cmIlluminantD65                    EQU        $00000002
  181. cmIlluminantD93                    EQU        $00000003
  182. cmIlluminantF2                    EQU        $00000004
  183. cmIlluminantD55                    EQU        $00000005
  184. cmIlluminantA                    EQU        $00000006
  185. cmIlluminantEquiPower            EQU        $00000007
  186. cmIlluminantF8                    EQU        $00000008
  187. ;  Spot Function Value 
  188.  
  189. cmSpotFunctionUnknown            EQU        0
  190. cmSpotFunctionDefault            EQU        1
  191. cmSpotFunctionRound                EQU        2
  192. cmSpotFunctionDiamond            EQU        3
  193. cmSpotFunctionEllipse            EQU        4
  194. cmSpotFunctionLine                EQU        5
  195. cmSpotFunctionSquare            EQU        6
  196. cmSpotFunctionCross                EQU        7
  197. ;  Color Space Signatures 
  198.  
  199. cmXYZData                        EQU        'XYZ '
  200. cmLabData                        EQU        'Lab '
  201. cmLuvData                        EQU        'Luv '
  202. cmYxyData                        EQU        'Yxy '
  203. cmRGBData                        EQU        'RGB '
  204. cmGrayData                        EQU        'GRAY'
  205. cmHSVData                        EQU        'HSV '
  206. cmHLSData                        EQU        'HLS '
  207. cmCMYKData                        EQU        'CMYK'
  208. cmCMYData                        EQU        'CMY '
  209. cmMCH5Data                        EQU        'MCH5'
  210. cmMCH6Data                        EQU        'MCH6'
  211. cmMCH7Data                        EQU        'MCH7'
  212. cmMCH8Data                        EQU        'MCH8'
  213. ;  profileClass enumerations 
  214.  
  215. cmInputClass                    EQU        'scnr'
  216. cmDisplayClass                    EQU        'mntr'
  217. cmOutputClass                    EQU        'prtr'
  218. cmLinkClass                        EQU        'link'
  219. cmAbstractClass                    EQU        'abst'
  220. cmColorSpaceClass                EQU        'spac'
  221. ;  platform enumerations 
  222.  
  223. cmMacintosh                        EQU        'APPL'
  224. cmMicrosoft                        EQU        'MSFT'
  225. cmSolaris                        EQU        'SUNW'
  226. cmSiliconGraphics                EQU        'SGI '
  227. cmTaligent                        EQU        'TGNT'
  228. ;  ColorSync 1.0 elements 
  229.  
  230. cmCS1ChromTag                    EQU        'chrm'
  231. cmCS1TRCTag                        EQU        'trc '
  232. cmCS1NameTag                    EQU        'name'
  233. cmCS1CustTag                    EQU        'cust'
  234. ;  General element data types 
  235. CMDateTime                RECORD 0
  236. year                     ds.w    1                ; offset: $0 (0)
  237. month                     ds.w    1                ; offset: $2 (2)
  238. dayOfTheMonth             ds.w    1                ; offset: $4 (4)
  239. hours                     ds.w    1                ; offset: $6 (6)
  240. minutes                     ds.w    1                ; offset: $8 (8)
  241. seconds                     ds.w    1                ; offset: $A (10)
  242. sizeof                     EQU *                    ; size:   $C (12)
  243.                         ENDR
  244. CMFixedXYZColor            RECORD 0
  245. X                         ds.l    1                ; offset: $0 (0)
  246. Y                         ds.l    1                ; offset: $4 (4)
  247. Z                         ds.l    1                ; offset: $8 (8)
  248. sizeof                     EQU *                    ; size:   $C (12)
  249.                         ENDR
  250. ; typedef unsigned short                 CMXYZComponent
  251.  
  252. CMXYZColor                RECORD 0
  253. X                         ds.w    1                ; offset: $0 (0)
  254. Y                         ds.w    1                ; offset: $2 (2)
  255. Z                         ds.w    1                ; offset: $4 (4)
  256. sizeof                     EQU *                    ; size:   $6 (6)
  257.                         ENDR
  258. CM2Header                RECORD 0
  259. size                     ds.l    1                ; offset: $0 (0)        ;  This is the total size of the Profile 
  260. CMMType                     ds.l    1                ; offset: $4 (4)        ;  CMM signature,  Registered with CS2 consortium  
  261. profileVersion             ds.l    1                ; offset: $8 (8)        ;  Version of CMProfile format 
  262. profileClass             ds.l    1                ; offset: $C (12)        ;  input, display, output, devicelink, abstract, or color conversion profile type 
  263. dataColorSpace             ds.l    1                ; offset: $10 (16)        ;  color space of data 
  264. profileConnectionSpace     ds.l    1                ; offset: $14 (20)        ;  profile connection color space 
  265. dateTime                 ds        CMDateTime        ; offset: $18 (24)        ;  date and time of profile creation 
  266. CS2profileSignature         ds.l    1                ; offset: $24 (36)        ;  'acsp' constant ColorSync 2.0 file ID 
  267. platform                 ds.l    1                ; offset: $28 (40)        ;  primary profile platform, Registered with CS2 consortium 
  268. flags                     ds.l    1                ; offset: $2C (44)        ;  profile flags 
  269. deviceManufacturer         ds.l    1                ; offset: $30 (48)        ;  Registered with ICC consortium 
  270. deviceModel                 ds.l    1                ; offset: $34 (52)        ;  Registered with ICC consortium 
  271. deviceAttributes         ds.l    2                ; offset: $38 (56)        ;  Attributes like paper type 
  272. renderingIntent             ds.l    1                ; offset: $40 (64)        ;  preferred rendering intent of tagged object 
  273. white                     ds        CMFixedXYZColor ; offset: $44 (68)        ;  profile illuminant 
  274. creator                     ds.l    1                ; offset: $50 (80)        ;  profile creator 
  275. reserved                 ds.b    44                ; offset: $54 (84)        ;  reserved for future use 
  276. sizeof                     EQU *                    ; size:   $80 (128)
  277.                         ENDR
  278. CMTagRecord                RECORD 0
  279. tag                         ds.l    1                ; offset: $0 (0)        ;  Registered with CS2 consortium 
  280. elementOffset             ds.l    1                ; offset: $4 (4)        ;  Relative to start of CMProfile 
  281. elementSize                 ds.l    1                ; offset: $8 (8)
  282. sizeof                     EQU *                    ; size:   $C (12)
  283.                         ENDR
  284. CMTagElemTable            RECORD 0
  285. count                     ds.l    1                ; offset: $0 (0)
  286. tagList                     ds        CMTagRecord        ; offset: $4 (4) <-- really an array of length one ;  Variable size 
  287. sizeof                     EQU *                    ; size:   $10 (16)
  288.                         ENDR
  289. ;  External 0x02002001 CMProfile 
  290. CM2Profile                RECORD 0
  291. header                     ds        CM2Header        ; offset: $0 (0)
  292. tagTable                 ds        CMTagElemTable ; offset: $80 (128)
  293. elemData                 ds.b    1                ; offset: $90 (144) <-- really an array of length one ;  Tagged element storage. Variable size 
  294.                          ORG 146
  295. sizeof                     EQU *                    ; size:   $92 (146)
  296.                         ENDR
  297. ; typedef struct CM2Profile *            CM2ProfilePtr
  298.  
  299. ; typedef CM2ProfilePtr *                CM2ProfileHandle
  300.  
  301. ;  Tag Type Definitions 
  302. CMCurveType                RECORD 0
  303. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'curv' 
  304. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  305. countValue                 ds.l    1                ; offset: $8 (8)        ;  number of entries in table that follows 
  306. data                     ds.w    1                ; offset: $C (12) <-- really an array of length one ;  Tagged element storage. Variable size 
  307. sizeof                     EQU *                    ; size:   $E (14)
  308.                         ENDR
  309. CMDataType                RECORD 0
  310. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'data' 
  311. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  312. dataFlag                 ds.l    1                ; offset: $8 (8)        ;  0 = ASCII, 1 = binary 
  313. data                     ds.b    1                ; offset: $C (12) <-- really an array of length one ;  Tagged element storage. Variable size 
  314.                          ORG 14
  315. sizeof                     EQU *                    ; size:   $E (14)
  316.                         ENDR
  317. CMDateTimeType            RECORD 0
  318. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'dtim' 
  319. reserved                 ds.l    1                ; offset: $4 (4)
  320. dateTime                 ds        CMDateTime        ; offset: $8 (8)
  321. sizeof                     EQU *                    ; size:   $14 (20)
  322.                         ENDR
  323. CMLut16Type                RECORD 0
  324. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'mft2' 
  325. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  326. inputChannels             ds.b    1                ; offset: $8 (8)        ;  Number of input channels 
  327. outputChannels             ds.b    1                ; offset: $9 (9)        ;  Number of output channels 
  328. gridPoints                 ds.b    1                ; offset: $A (10)        ;  Number of clutTable grid points 
  329. reserved2                 ds.b    1                ; offset: $B (11)        ;  fill with 0x00 
  330. matrix                     ds.l    3 * 3            ; offset: $C (12)        ;  
  331. inputTableEntries         ds.w    1                ; offset: $30 (48)        ;  
  332. outputTableEntries         ds.w    1                ; offset: $32 (50)        ;  
  333. inputTable                 ds.w    1                ; offset: $34 (52) <-- really an array of length one ;  Variable size 
  334. CLUT                     ds.w    1                ; offset: $36 (54) <-- really an array of length one ;  Variable size 
  335. outputTable                 ds.w    1                ; offset: $38 (56) <-- really an array of length one ;  Variable size 
  336. sizeof                     EQU *                    ; size:   $3A (58)
  337.                         ENDR
  338. CMLut8Type                RECORD 0
  339. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'mft1' 
  340. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  341. inputChannels             ds.b    1                ; offset: $8 (8)        ;  
  342. outputChannels             ds.b    1                ; offset: $9 (9)        ;  
  343. gridPoints                 ds.b    1                ; offset: $A (10)        ;  
  344. reserved2                 ds.b    1                ; offset: $B (11)        ;  fill with 0x00 
  345. matrix                     ds.l    3 * 3            ; offset: $C (12)        ;  
  346. inputTable                 ds.b    256                ; offset: $30 (48)        ;  fixed size of 256 
  347. CLUT                     ds.b    2                ; offset: $130 (304)    ;  Variable size 
  348. outputTable                 ds.b    256                ; offset: $132 (306)    ;  fixed size of 256 
  349. sizeof                     EQU *                    ; size:   $232 (562)
  350.                         ENDR
  351. CMMeasurementType        RECORD 0
  352. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'meas' 
  353. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  354. standardObserver         ds.l    1                ; offset: $8 (8)        ;  0 : unknown, 1 : CIE 1931, 2 : CIE 1964 
  355. backingXYZ                 ds        CMFixedXYZColor ; offset: $C (12)        ;  absolute XYZ values of backing 
  356. geometry                 ds.l    1                ; offset: $18 (24)        ;  0 : unknown, 1 : 0/45 or 45/0, 2 :0/d or d/0 
  357. flare                     ds.l    1                ; offset: $1C (28)        ;  0 : 0%, 1 : 100% flare 
  358. illuminant                 ds.l    1                ; offset: $20 (32)        ;  standard illuminant 
  359. sizeof                     EQU *                    ; size:   $24 (36)
  360.                         ENDR
  361. CMNamedColorType        RECORD 0
  362. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'ncol' 
  363. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  364. vendorFlag                 ds.l    1                ; offset: $8 (8)        ;  
  365. count                     ds.l    1                ; offset: $C (12)        ;  count of named colors in array that follows 
  366. prefixName                 ds.b    1                ; offset: $10 (16) <-- really an array of length one ;  Variable size, max = 32, to access fields after this one, have to count bytes 
  367. suffixName                 ds.b    1                ; offset: $11 (17) <-- really an array of length one ;  Variable size, max = 32 
  368. data                     ds.b    1                ; offset: $12 (18) <-- really an array of length one ;  varaible size data as explained below 
  369.                          ORG 20
  370. sizeof                     EQU *                    ; size:   $14 (20)
  371.                         ENDR
  372. ;
  373. ;    A variable size array of structs appears as the last block of data
  374. ;    in the above struct, CMNamedColorType.  The data structure
  375. ;    is as follows: (example in C)
  376. ;    
  377. ;     struct {                                             
  378. ;            unsigned char    rootName[1];                 * Variable size, max = 32 
  379. ;            unsigned char    colorCoords[1];                 * Variable size  
  380. ;     } colorName[1];                                     * Variable size  
  381. ;
  382. CMNamedColor2Type        RECORD 0
  383. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'ncl2' 
  384. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  385. vendorFlag                 ds.l    1                ; offset: $8 (8)        ;  lower 16 bits reserved for ICC use 
  386. count                     ds.l    1                ; offset: $C (12)        ;  count of named colors in array that follows 
  387. deviceChannelCount         ds.l    1                ; offset: $10 (16)        ;  number of device channels, 0 indicates no device value available 
  388. prefixName                 ds.b    32                ; offset: $14 (20)        ;  32 byte field.  7 bit ASCII null terminated 
  389. suffixName                 ds.b    32                ; offset: $34 (52)        ;  32 byte field.  7 bit ASCII null terminated 
  390. data                     ds.b    1                ; offset: $54 (84) <-- really an array of length one ;  varaible size data as explained below 
  391.                          ORG 86
  392. sizeof                     EQU *                    ; size:   $56 (86)
  393.                         ENDR
  394. ;
  395. ;    A variable size array of structs appears as the last block of data
  396. ;    in the above struct, CMNamedColor2Type.  The data structure
  397. ;    is as follows: (example in C)
  398. ;    
  399. ;     struct {                                             
  400. ;            unsigned char    rootName[1];                 * 32 byte field.  7 bit ASCII null terminated
  401. ;            unsigned char    PCSColorCoords[1];             * Variable size  
  402. ;            unsigned char    DeviceColorCoords[1];         * Variable size  
  403. ;     } colorName2[1];                                     * Variable size  
  404. ;
  405. CMTextDescriptionType    RECORD 0
  406. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'desc' 
  407. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  408. ASCIICount                 ds.l    1                ; offset: $8 (8)        ;  the count of "bytes" 
  409. ASCIIName                 ds.b    2                ; offset: $C (12)        ;  Variable size, to access fields after this one, have to count bytes 
  410. UniCodeCode                 ds.l    1                ; offset: $E (14)
  411. UniCodeCount             ds.l    1                ; offset: $12 (18)        ;  the count of characters, each character has two bytes 
  412. UniCodeName                 ds.b    2                ; offset: $16 (22)        ;  Variable size 
  413. ScriptCodeCode             ds.w    1                ; offset: $18 (24)
  414. ScriptCodeCount             ds.b    1                ; offset: $1A (26)        ;  the count of "bytes" 
  415.                          ORG 28
  416. ScriptCodeName             ds.b    2                ; offset: $1C (28)        ;  Variable size 
  417. sizeof                     EQU *                    ; size:   $1E (30)
  418.                         ENDR
  419. CMTextType                RECORD 0
  420. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'text' 
  421. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  422. text                     ds.b    1                ; offset: $8 (8) <-- really an array of length one ;  count of text is obtained from tag size element 
  423.                          ORG 10
  424. sizeof                     EQU *                    ; size:   $A (10)
  425.                         ENDR
  426. CMScreeningType            RECORD 0
  427. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'scrn' 
  428. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  429. screeningFlag             ds.l    1                ; offset: $8 (8)        ;  bit 0 : use printer default screens, bit 1 : inch/cm 
  430. channelCount             ds.l    1                ; offset: $C (12)
  431. data                     ds.b    1                ; offset: $10 (16) <-- really an array of length one ;  varaible size data as explained below 
  432.                          ORG 18
  433. sizeof                     EQU *                    ; size:   $12 (18)
  434.                         ENDR
  435. ;
  436. ;    A variable size array of structs appears as the last block of data
  437. ;    in the above struct, CMScreeningType.  The data structure
  438. ;    is as follows: (example in C)
  439. ;    
  440. ;    struct {
  441. ;        Fixed            frequency;
  442. ;        Fixed            angle;
  443. ;        unsigned long    sportFunction;
  444. ;     }    channelScreening[1];                             * Variable size 
  445. ;
  446. CMSignatureType            RECORD 0
  447. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'sig ' 
  448. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  449. signature                 ds.l    1                ; offset: $8 (8)
  450. sizeof                     EQU *                    ; size:   $C (12)
  451.                         ENDR
  452. CMS15Fixed16ArrayType    RECORD 0
  453. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'sf32' 
  454. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  455. value                     ds.l    1                ; offset: $8 (8) <-- really an array of length one ;  Variable size 
  456. sizeof                     EQU *                    ; size:   $C (12)
  457.                         ENDR
  458. CMU16Fixed16ArrayType    RECORD 0
  459. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'uf32' 
  460. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  461. value                     ds.l    1                ; offset: $8 (8) <-- really an array of length one ;  Variable size 
  462. sizeof                     EQU *                    ; size:   $C (12)
  463.                         ENDR
  464. CMUInt16ArrayType        RECORD 0
  465. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'ui16' 
  466. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  467. value                     ds.w    1                ; offset: $8 (8) <-- really an array of length one ;  Variable size 
  468. sizeof                     EQU *                    ; size:   $A (10)
  469.                         ENDR
  470. CMUInt32ArrayType        RECORD 0
  471. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'ui32' 
  472. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  473. value                     ds.l    1                ; offset: $8 (8) <-- really an array of length one ;  Variable size 
  474. sizeof                     EQU *                    ; size:   $C (12)
  475.                         ENDR
  476. CMUInt64ArrayType        RECORD 0
  477. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'ui64' 
  478. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  479. value                     ds.l    1                ; offset: $8 (8) <-- really an array of length one ;  Variable size (x2) 
  480. sizeof                     EQU *                    ; size:   $C (12)
  481.                         ENDR
  482. CMUInt8ArrayType        RECORD 0
  483. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'ui08' 
  484. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  485. value                     ds.b    1                ; offset: $8 (8) <-- really an array of length one ;  Variable size 
  486.                          ORG 10
  487. sizeof                     EQU *                    ; size:   $A (10)
  488.                         ENDR
  489. CMViewingConditionsType    RECORD 0
  490. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'view' 
  491. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  492. illuminant                 ds        CMFixedXYZColor ; offset: $8 (8)        ;  absolute XYZs of illuminant  in cd/m^2 
  493. surround                 ds        CMFixedXYZColor ; offset: $14 (20)        ;  absolute XYZs of surround in cd/m^2 
  494. stdIlluminant             ds.l    1                ; offset: $20 (32)        ;  see definitions of std illuminants 
  495. sizeof                     EQU *                    ; size:   $24 (36)
  496.                         ENDR
  497. CMXYZType                RECORD 0
  498. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'XYZ ' 
  499. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  500. XYZ                         ds        CMFixedXYZColor ; offset: $8 (8) <-- really an array of length one ;  variable size XYZ tristimulus values 
  501. sizeof                     EQU *                    ; size:   $14 (20)
  502.                         ENDR
  503. ;  Profile sequence description type 
  504. CMProfileSequenceDescType RECORD 0
  505. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'pseq ' 
  506. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  507. count                     ds.l    1                ; offset: $8 (8)        ;  Number of descriptions 
  508. data                     ds.b    1                ; offset: $C (12) <-- really an array of length one ;  varaible size data as explained below 
  509.                          ORG 14
  510. sizeof                     EQU *                    ; size:   $E (14)
  511.                         ENDR
  512. ;
  513. ;    A variable size array of structs appears as the last block of data
  514. ;    in the above struct, CMProfileSequenceDescType.  The data structure
  515. ;    is as follows: (example in C)
  516. ;    
  517. ;     struct {                                             
  518. ;            OSType            deviceMfg;                     * Device Manufacturer 
  519. ;            OSType            deviceModel;                 * Decvice Model 
  520. ;            unsigned long    attributes[2];                 * Device attributes 
  521. ;            OSType            technology;                     * Technology signature 
  522. ;            unsigned long    mfgDescASCIICount;             * the count of "bytes" 
  523. ;            unsigned char    mfgDescASCIIName[2];         * Variable size 
  524. ;            unsigned long    mfgDescUniCodeCode;             
  525. ;            unsigned long    mfgDescUniCodeCount;         * the count of characters, each character has two bytes 
  526. ;            unsigned char    mfgDescUniCodeName[2];         * Variable size 
  527. ;            unsigned long    mfgDescScriptCodeCode;         
  528. ;            unsigned long    mfgDescScriptCodeCount;         * the count of "bytes" 
  529. ;            unsigned char    mfgDescScriptCodeName[2];     * Variable size 
  530. ;            unsigned long    modelDescASCIICount;         * the count of "bytes" 
  531. ;            unsigned char    modelDescASCIIName[2];         * Variable size 
  532. ;            unsigned long    modelDescUniCodeCode;         
  533. ;            unsigned long    modelDescUniCodeCount;         * the count of characters, each character has two bytes 
  534. ;            unsigned char    modelDescUniCodeName[2];     * Variable size 
  535. ;            short            modelDescScriptCodeCode;     
  536. ;            unsigned char    modelDescScriptCodeCount;     * the count of "bytes" 
  537. ;            SInt8            filler;                         * For proper alignment across languages 
  538. ;            unsigned char    modelDescScriptCodeName[2];     * Variable size 
  539. ;     }    profileDescription[1];                         
  540. ;
  541. ;  Under color removal, black generation type 
  542. CMUcrBgType                RECORD 0
  543. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'bfd  ' 
  544. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  545. ucrCount                 ds.l    1                ; offset: $8 (8)        ;  Number of UCR entries 
  546. ucrValues                 ds.w    1                ; offset: $C (12) <-- really an array of length one ;  variable size 
  547. bgCount                     ds.l    1                ; offset: $E (14)        ;  Number of BG entries 
  548. bgValues                 ds.w    1                ; offset: $12 (18) <-- really an array of length one ;  variable size 
  549. ucrbgASCII                 ds.b    1                ; offset: $14 (20) <-- really an array of length one ;  null terminated ASCII string 
  550.                          ORG 22
  551. sizeof                     EQU *                    ; size:   $16 (22)
  552.                         ENDR
  553. CMIntentCRDVMSize        RECORD 0
  554. renderingIntent             ds.l    1                ; offset: $0 (0)        ;  rendering intent 
  555. VMSize                     ds.l    1                ; offset: $4 (4)        ;  VM size taken up by the CRD 
  556. sizeof                     EQU *                    ; size:   $8 (8)
  557.                         ENDR
  558. CMPS2CRDVMSizeType        RECORD 0
  559. typeDescriptor             ds.l    1                ; offset: $0 (0)        ;  'psvm' 
  560. reserved                 ds.l    1                ; offset: $4 (4)        ;  fill with 0x00 
  561. count                     ds.l    1                ; offset: $8 (8)        ;  number of intent entries 
  562. intentCRD                 ds        CMIntentCRDVMSize ; offset: $C (12) <-- really an array of length one ;  variable size 
  563. sizeof                     EQU *                    ; size:   $14 (20)
  564.                         ENDR
  565. ; **********************************************************************
  566. ; ************** ColorSync 1.0 profile specification *******************
  567. ; **********************************************************************
  568.  
  569. cmGrayResponse                    EQU        0
  570. cmRedResponse                    EQU        1
  571. cmGreenResponse                    EQU        2
  572. cmBlueResponse                    EQU        3
  573. cmCyanResponse                    EQU        4
  574. cmMagentaResponse                EQU        5
  575. cmYellowResponse                EQU        6
  576. cmUcrResponse                    EQU        7
  577. cmBgResponse                    EQU        8
  578. cmOnePlusLastResponse            EQU        9
  579. ;  Device types 
  580.  
  581. cmMonitorDevice                    EQU        'mntr'
  582. cmScannerDevice                    EQU        'scnr'
  583. cmPrinterDevice                    EQU        'prtr'
  584. CMIString                RECORD 0
  585. theScript                 ds.w    1                ; offset: $0 (0)
  586. theString                 ds        Str63            ; offset: $2 (2)
  587. sizeof                     EQU *                    ; size:   $42 (66)
  588.                         ENDR
  589. ;  Profile options 
  590.  
  591. cmPerceptualMatch                EQU        $0000                ; Default. For photographic images 
  592. cmColorimetricMatch                EQU        $0001                ; Exact matching when possible 
  593. cmSaturationMatch                EQU        $0002                ; For solid colors 
  594. ;  Profile flags 
  595.  
  596. cmNativeMatchingPreferred        EQU        $00000001            ; Default to native not preferred 
  597. cmTurnOffCache                    EQU        $00000002            ; Default to turn on CMM cache 
  598. ; typedef long                             CMMatchOption
  599.  
  600. ; typedef long                             CMMatchFlag
  601.  
  602. CMHeader                RECORD 0
  603. size                     ds.l    1                ; offset: $0 (0)
  604. CMMType                     ds.l    1                ; offset: $4 (4)
  605. applProfileVersion         ds.l    1                ; offset: $8 (8)
  606. dataType                 ds.l    1                ; offset: $C (12)
  607. deviceType                 ds.l    1                ; offset: $10 (16)
  608. deviceManufacturer         ds.l    1                ; offset: $14 (20)
  609. deviceModel                 ds.l    1                ; offset: $18 (24)
  610. deviceAttributes         ds.l    2                ; offset: $1C (28)
  611. profileNameOffset         ds.l    1                ; offset: $24 (36)
  612. customDataOffset         ds.l    1                ; offset: $28 (40)
  613. flags                     ds.l    1                ; offset: $2C (44)
  614. options                     ds.l    1                ; offset: $30 (48)
  615. white                     ds        CMXYZColor        ; offset: $34 (52)
  616. black                     ds        CMXYZColor        ; offset: $3A (58)
  617. sizeof                     EQU *                    ; size:   $40 (64)
  618.                         ENDR
  619. CMProfileChromaticities    RECORD 0
  620. red                         ds        CMXYZColor        ; offset: $0 (0)
  621. green                     ds        CMXYZColor        ; offset: $6 (6)
  622. blue                     ds        CMXYZColor        ; offset: $C (12)
  623. cyan                     ds        CMXYZColor        ; offset: $12 (18)
  624. magenta                     ds        CMXYZColor        ; offset: $18 (24)
  625. yellow                     ds        CMXYZColor        ; offset: $1E (30)
  626. sizeof                     EQU *                    ; size:   $24 (36)
  627.                         ENDR
  628. CMProfileResponse        RECORD 0
  629. counts                     ds.w    9                ; offset: $0 (0)
  630. data                     ds.w    1                ; offset: $12 (18) <-- really an array of length one ;  Variable size 
  631. sizeof                     EQU *                    ; size:   $14 (20)
  632.                         ENDR
  633. CMProfile                RECORD 0
  634. header                     ds        CMHeader        ; offset: $0 (0)
  635. profile                     ds        CMProfileChromaticities ; offset: $40 (64)
  636. response                 ds        CMProfileResponse ; offset: $64 (100)
  637. profileName                 ds        CMIString        ; offset: $78 (120)
  638. customData                 ds.b    1                ; offset: $BA (186) <-- really an array of length one ;  Variable size 
  639.                          ORG 188
  640. sizeof                     EQU *                    ; size:   $BC (188)
  641.                         ENDR
  642. ; typedef struct CMProfile *            CMProfilePtr
  643.  
  644. ; typedef CMProfilePtr *                CMProfileHandle
  645.  
  646.     IF OLDROUTINENAMES THEN
  647.  
  648. kCMApplProfileVersion            EQU        $00000100
  649.  
  650. grayResponse                    EQU        0
  651. redResponse                        EQU        1
  652. greenResponse                    EQU        2
  653. blueResponse                    EQU        3
  654. cyanResponse                    EQU        4
  655. magentaResponse                    EQU        5
  656. yellowResponse                    EQU        6
  657. ucrResponse                        EQU        7
  658. bgResponse                        EQU        8
  659. onePlusLastResponse                EQU        9
  660.  
  661. rgbData                            EQU        'RGB '
  662. cmykData                        EQU        'CMYK'
  663. grayData                        EQU        'GRAY'
  664. xyzData                            EQU        'XYZ '
  665.  
  666. monitorDevice                    EQU        'mntr'
  667. scannerDevice                    EQU        'scnr'
  668. printerDevice                    EQU        'prtr'
  669. ; typedef unsigned short                 XYZComponent
  670.  
  671. XYZColor                RECORD 0
  672. f                         ds        CMXYZColor
  673. sizeof                     EQU *                    ; size:   $6 (6)
  674.                         ENDR
  675.  
  676.  
  677. ; typedef unsigned short                 CMResponseData
  678.  
  679. IString                    RECORD 0
  680. f                         ds        CMIString
  681. sizeof                     EQU *                    ; size:   $42 (66)
  682.                         ENDR
  683.  
  684.  
  685. ; typedef long                             CMResponseColor
  686.  
  687. ; typedef CMResponseColor                 responseColor
  688.  
  689.     ENDIF
  690.     ENDIF ; __CMICCPROFILE__ 
  691.  
  692.